#ifndef State_h_guard
#define State_h_guard

#include <set>
#include <string>

class State {
private:
	friend class State_Set;
	std::string state;
	State(const std::string& s);
public:
	bool operator<(const State& s) const;
	bool operator!=(const State& s) const;
};

class State_Set {
private:
	std::set<std::string> state_set;
public:
	void add_state(const std::string& state);
	State operator()(const std::string& s) const;
};

static State_Set state_set;

#endif /* State_h_guard */
